// 课程信息 相关接口

// 获取token信息
function token() {
	// 初始化返回值
	var data_return = false;
	// 读取临时缓存
	// var save_short = uni.$focus.varShortTime();
	var save_short = uni.$focus.varForever('get');
	// 如果数据存在
	if (save_short && save_short.token) { data_return = save_short.token; }
	// 返回数据
	return data_return;
}

// 接口请求 - 继续教育课程相关
export default {
	
	// ========================================================== 课程入口列表
	
	//首页课程分类点击请求
	courseInfoLists:function(objC){
		if(objC.data.workId){
			objC.data.sentry_id = objC.data.workId
		}
		uni.$focus.request({
			method: "get",
			data: objC.data,
			url: `/aq_course/app/v2/cert/courseInfoLists`,
			header: {
				"token": token()
			},
			success: (res) => {
				// 回调数据
				if (objC.success) { objC.success(res); }
			},
			fail:(err)=>{
				if (objC.fail) { objC.fail(err); }
			}
		});
	},
	// 首页课程列表
	listInHome: function (objC) {
		
		// 获取用户token
		var token_result = token();
		
		// 请求数据
		uni.$focus.request({
			method: "get",
			url: '/aq_course/app/v2/home/getCourseList',
			loadingText: '请求课程列表',
			header: {
				"token": token_result ? token_result : '',
			},
			openToast: false,
			openGreen: true, // 开启绿色通道
			fail: (res) => { if (objC.fail) { objC.fail(res); } },
			success: (res) => {
				// 岗位课程总列表
				var list_yuan = res.list ? res.list : []; // 原数据
				var list_back = []; // 准备封装数据
				// 循环原始数据
				for (let i = 0; i < list_yuan.length; i++)
				{
					// 节点 - 一个岗位课程大对象
					let ele_gang = list_yuan[i];
					// 只有当包含课程的时候，才执行
					if (ele_gang.course_list && ele_gang.course_list.length >= 0)
					{
						
						// ------------------------ 岗位信息
						let gang_yuan = ele_gang; // 原始数据
						let gang_back = {}; // 结果产物
						// 结果产物赋值
						gang_back = {
							id: gang_yuan.sentry_id ? gang_yuan.sentry_id : 0, // 岗位id
							name: gang_yuan.sentry_name ? gang_yuan.sentry_name : '', // 岗位名称
						};
						// ------------------------ 包含课程信息
						let ke_yuan = ele_gang.course_list ? ele_gang.course_list : []; // 原数据
						let ke_back = []; // 准备封装数据
						// 循环原始数据
						for (let j = 0; j < ke_yuan.length; j++)
						{
							// 节点 - 一个课程对象
							let ele_lesson = ke_yuan[j];
							// 课程对象重构
							let obj_lesson = {
								"key": 'lessonKey_' + ele_lesson.id, // 循环key值
								courseId: ele_lesson.id, // 课程id
								jieId: ele_lesson.study_chapter_id, // 小节id
								img: ele_lesson.thumb, // 课程的图片
								isMust: ele_lesson.is_must, // 是否必修
								title: ele_lesson.title ? ele_lesson.title : '', // 课程的标题文字
								scoreGet: ele_lesson.study_score ? ele_lesson.study_score : 0, // 已获学时
								scoreTotal: ele_lesson.total_score ? ele_lesson.total_score : 0, // 总学时
								state: ele_lesson.study_status, // 学习状态：0-未学习  1-学习中  2-已学完
								stateTxt: ele_lesson.study_status_txt ? ele_lesson.study_status_txt : 0, // 状态文字
							};
							// 将元素放入临时数组
							ke_back.push(obj_lesson); 
						}
						
						// ------------------------
						// 重构岗位课程节点
						let obj_list = {
							"key": 'gangKey_' + gang_back.id, // 循环key值
							"info": gang_back,
							"list": ke_back,
						};
						// 将节点 添加到 岗位课程总列表
						list_back.push(obj_list);
					}
				}
				
				// 返回数据封装
				var data_back = {
					"list": list_back,
				};
				// 回调数据
				if (objC.success) { objC.success(data_back); }
				
			}
		});
		
	},
	
	// 全部课程总列表
	listInAll: function (objC) {
		
		// 获取用户token
		var token_result = token();
		// 请求数据
		uni.$focus.request({
			method: "get",
			url:'/aq_course/app/v2/course/myCourse',
			loadingText: '请求课程列表',
			header: {
				"token": token_result ? token_result : '',
			},
			openToast: false,
			openGreen: true, // 开启绿色通道
			fail: (res) => { if (objC.fail) { objC.fail(res); } },
			success: (res) => {
				
				// 岗位课程总列表
				var list_complete = res.complete_list ? res.complete_list : []; // 已完成原数据
				var list_incomplete=res.incomplete_list?res.incomplete_list:[];//未完成元数据
				var list_back = []; // 准备封装数据
				var list_back2=[];
				// 循环原始数据
				for (let i = 0; i < list_complete.length; i++){
					// 节点 - 一个课程对象
					let ele_lesson = list_complete[i];
					// 课程对象重构
					let obj_lesson = {
						"key": 'lessonKey_' + ele_lesson.id, // 循环key值
						courseId: ele_lesson.id, // 课程id
						jieId: ele_lesson.study_chapter_id, // 小节id
						img: ele_lesson.thumb, // 课程的图片
						must:ele_lesson.bi_score,//必修总学时
						mustScore:ele_lesson.bi_study_score,//已修必修学时
						xuan:ele_lesson.xuan_score,//选修总学时
						xuanScore:ele_lesson.xuan_study_score,
						// isMust: ele_lesson.is_must, // 是否必修
						title: ele_lesson.title ? ele_lesson.title : '', // 课程的标题文字
						scoreGet: ele_lesson.study_score ? ele_lesson.study_score : 0, // 已获学时
						scoreTotal: ele_lesson.total_score ? ele_lesson.total_score : 0, // 总学时
						state: ele_lesson.study_status, // 学习状态：0-未学习  1-学习中  2-已学完
						stateTxt: ele_lesson.study_status_txt ? ele_lesson.study_status_txt : 0, // 状态文字
						isBixiu:ele_lesson.is_bixiu,
						isXuanxiu:ele_lesson.is_xuanxiu
					};
					// 将元素放入临时数组
					list_back.push(obj_lesson); 
				}
				for(let j = 0; j < list_incomplete.length; j++){
					// 节点 - 一个课程对象
					let ele_lesson = list_incomplete[j];
					// 课程对象重构
					let obj_lesson = {
						"key": 'lessonKey_' + ele_lesson.id, // 循环key值
						courseId: ele_lesson.id, // 课程id
						jieId: ele_lesson.study_chapter_id, // 小节id
						img: ele_lesson.thumb, // 课程的图片
						must:ele_lesson.bi_score,//必修总学时
						mustScore:ele_lesson.bi_study_score,//已修必修学时
						xuan:ele_lesson.xuan_score,//选修总学时
						xuanScore:ele_lesson.xuan_study_score,
						// isMust: ele_lesson.is_must, // 是否必修
						title: ele_lesson.title ? ele_lesson.title : '', // 课程的标题文字
						scoreGet: ele_lesson.study_score ? ele_lesson.study_score : 0, // 已获学时
						scoreTotal: ele_lesson.total_score ? ele_lesson.total_score : 0, // 总学时
						state: ele_lesson.study_status, // 学习状态：0-未学习  1-学习中  2-已学完
						stateTxt: ele_lesson.study_status_txt ? ele_lesson.study_status_txt : 0, // 状态文字
						isBixiu:ele_lesson.is_bixiu,
						isXuanxiu:ele_lesson.is_xuanxiu
				    }
				    // 将元素放入临时数组
				    list_back2.push(obj_lesson); 
				}
				// 返回数据封装
				var data_back = {
					"list": list_back,
					"list2":list_back2
				};
				// 回调数据
				if (objC.success) { objC.success(data_back); }
				
			}
		});
		
	},
	
	//首页课程分类点击请求
	getWorkList:function(objC){
		let page = objC.page + ''
		let id = objC.workId + ''
		uni.$focus.request({
			method: "get",
			data: {
				page,
				sentry_id: id,
				pageSize: 10
			},
			url: `/aq_course/app/v2/course/getCategoryCourseList/${objC.id}`,
			header: {
				"token": token()
			},
			success: (res) => {
				// 回调数据
				if (objC.success) { objC.success(res); }
			},
			fail:(err)=>{
				if (objC.fail) { objC.fail(err); }
			}
		});
	},
	
	//得到工种
	getPersonList:function(objC){
		uni.$focus.request({
			method: "get",
			url: "/aq_user/v2/sentry/getIdentitySentry",
			header: {
				"token": token()
			},
			success: (res) => {
				// 回调数据
				//重新定义岗位知识
				if (objC.success) { objC.success(res); }
			}
		});
	},
	//首页课程资源分类
	homePageCourse :function(objC){
		uni.$focus.request({
			method: "get",
			url: '/aq_course/app/v2/home/categoryCourse',
			openToast: false,
			header: {
				"token": token() || ''
			},
			loadingText: '',
			openToast: false,
			openGreen: true, // 开启绿色通道
			success: (res) => {
				// 回调数据
				if (objC.success) { objC.success(res); }
			},
			fail: (err) => {
				// 回调数据
				if (objC.fail) { objC.fail(err); }
			},
		});
	},
	// ========================================================== 课程详情
	// 课程详情章节列表
	chapterList: function (objC) {
		let url,mydata
		//证书学习和入场学习item_type入场
		if(objC.send.type || objC.send.item_type){
			url = "/aq_course/app/v2/cert/courseDetail"
			mydata = { 
				term_id: objC.send.term_id,
				cert_id: objC.send.cert_id ,
				teach_course_info_id: objC.send.courseId ,
				teach_chapter_id: objC.send.jieId ? objC.send.jieId : 1, 
				item_type:objC.send.item_type ? objC.send.item_type : ''
			}
		}else{
			mydata = Object.assign({
				teach_chapter_id: 1, // 小节id
			}, objC.data);
			url= `/aq_course/app/v2/course/getCourseDetail/${objC.urlData.id}`
		}
			
			
		// 地址栏需要传递数据
		// var myurldata = Object.assign({
		// 	id: 0 // 课程id
		// }, objC.urlData);
		
		// 普通要传输的数据
		
		// 请求章节列表
		uni.$focus.request({
			method: "get",
			url,
			// urlData: myurldata,
			data: mydata,
			loadingText: '请求章节列表',
			header: {
				"token": token()
			},
			fail: (res) => { if (objC.fail) { objC.fail(res); } },
			success: (res) => {
				// --------------------------------- 课程基本信息
				var info_yuan = res.info ? res.info : {}; // 原始数据
				var info_back = {}; // 结果数据
				// 准备封装数据
				info_back = {
					id: info_yuan.id, // 课程id
					name: info_yuan.title, // 课程名称
					isMust: info_yuan.is_must, // 必修/选修
				};
				
				// --------------------------------- 章列表数据
				var zhang_yuan = res.course_list ? res.course_list : []; // 原数据
				var zhang_back = []; // 准备封装数据
				// 初始播放小节对象
				var jie_start = false;
				// 循环原始数据
				for (let i = 0; i < zhang_yuan.length; i++){
					// 节点 - 一个章对象
					let ele_zhang = zhang_yuan[i];
					// 章数据对象重构
					let obj_zhang = {
						"key": 'zhangKey_' + ele_zhang.id, // 循环key值
						isMust:ele_zhang.is_must,//本章是否必修
						zhangId: ele_zhang.id, // 章id
						number: ele_zhang.number_text, // 标题编号，如：第一章
						title: ele_zhang.title, // 标题文字
						section_had: ele_zhang.com_study_count, // 已学小节数量
						section_total: ele_zhang.chapter_count, // 总小节数量
						score_had:   ele_zhang.study_total_score, // 已获得学分
						score_total: ele_zhang.total_score, // 总学分
						isUnfold: false, // 是否展开
						section: [], // 小节数据列表
					};
					
					// --------------------------------- 小节列表数据
					var jie_yuan = ele_zhang.chapter_list ? ele_zhang.chapter_list : []; // 原数据
					// 循环小节列表
					for (let j = 0; j < jie_yuan.length; j++){
						// 节点 - 一个小节对象
						let ele_jie = jie_yuan[j];
						// 小节对象重构
						let obj_jie = {
							"key": 'jieKey_' + ele_jie.id, // 循环key值
							courseId: info_back.id, // 课程id
							zhangId: obj_zhang.zhangId, // 章id
							jieId: ele_jie.id, // 小节id
							state: (ele_jie.is_see == 1 && ele_jie.file_and_text) ? 1 : 0, // 小节状态： 0-不可观看  1-可以观看
							videoId: ele_jie.file_type == 1 ? ele_jie.file_and_text : '', // 课程视频id  
							videoSrc: ele_jie.file_type == 2 ? ele_jie.file_and_text : '', // 课程视频id  
							isViewing: ele_jie.study_ing == 1 ? true : false, // 是否正在观看
							number: ele_jie.number, // 标题编号
							title: ele_jie.chapter_title, // 标题文字
							videoLength: ele_jie.duration, // 视频时长
							score_had: ele_jie.study_get_score, // 已获得学分
							score_total: ele_jie.get_score, // 总学分
							second: ele_jie.second ? ele_jie.second : 0, // 观看秒数
							baifen: ele_jie.baifen ? ele_jie.baifen : 0, // 观看百分比
							isHaveQuestion: ele_jie.is_question == 1 ? true : false, // 小节是否绑定考试题
							status_exam:    ele_jie.question_status, // 课后练习题状态：0-不显示 1-待测评 2-已通过 3-未通过
							juanId: ele_jie.question_paper_id ? ele_jie.question_paper_id : 0, // 试卷id
						};
						// 如果视频状态异常，那么更改“正在观看状态”
						if (obj_jie.state != 1) { obj_jie.isViewing = false; }
						// 如果是正在播放项
						if (obj_jie.isViewing)
						{
							// 展开此小节的章
							obj_zhang.isUnfold = true;
							// 将此小节 赋值到 初始播放小节对象
							if (jie_start == false) { jie_start = obj_jie; }
						}
						// 将小节对象 添加到 章对象中
						obj_zhang.section.push(obj_jie);
					}
					
					
					// 将章对象 添加到 返回数组
					zhang_back.push(obj_zhang);
				}
				
				// 返回数据封装
				var data_back = {
					"info": info_back, // 课程基本信息
					"firstPlay": jie_start, // 初始播放小节对象
					"list": zhang_back, // 章数组
				};
				// 回调数据
				if (objC.success) { objC.success(data_back); }
				
			}
		});
		
	},
	
	// 添加课程观看人脸识别记录
	faceThanHistory: function (objC) {
		
		// 地址栏需要传递数据
		var mydata = Object.assign({
			teach_course_info_id: 0, // 课程id
			status: 1, // 是否通过：1-通过 2-未通过
			msg: '', // 备注信息
		}, objC.data);
		// 请求视频播放地址
		uni.$focus.request({
			method: "post",
			url: '/aq_course/app/v2/course/addStudyFaceLog',
			data: mydata,
			loadingText: '记录人脸对比',
			header: {
				"token": token()
			},
			fail: (res) => { if (objC.fail) { objC.fail(res); } },
			success: (res) => {
				// 回调数据
				
				
				if (objC.success) { objC.success(res); }
			}
		});
		
	},
	
	
	// ========================================================== 视频资源接口
	// 视频请求
	videoGet: function (objC) {
		
		// 地址栏需要传递数据
		var myurldata = Object.assign({
			videoid: 0, // 视频id
		}, objC.urlData);
		// 请求视频播放地址
		if (myurldata.videoid) {
			uni.$focus.request({
				method: "get",
				url: '/aq_attach/v2/video/get_video_address',
				urlData: myurldata,
				loadingText: '请求视频资源',
				header: {
					"token": token()
				},
				fail: (res) => { if (objC.fail) { objC.fail(res); } },
				success: (res) => {
					
					// 课程描述信息封装
					var data_yuan2 = (res && res.length) ? res[0] : {}; // 原数据
					// 元素构造
					var yuanshu = {
						url: data_yuan2.PlayURL, // 视频网络地址
						qingXiDu: data_yuan2.Definition, // 视频清晰度
						geShi: data_yuan2.Format, // 视频格式
						// duration: data_yuan2.Duration//视频时长
					};
					
					// 回调数据
					if (objC.success) { objC.success(yuanshu); }
					
				}
			});
		} else {

		}
		
	},
	
	// 视频观看进度更新
	videoProgressSet: function (objC) {
		
		// 普通要传输的数据
		var mydata = Object.assign({
			// 通用传递
			teach_course_info_id: 0, // 课程id
			teach_course_id: 0, // 章id
			teach_chapter_id: 0, // 小节id
			is_must: 0, // 是否必修
			number: '', // 小节编号
			baifen: 0, // 进度 例如 （10 20） 100代表已看完
			second: 0, // 已经观看的秒数
		}, objC.data);
		
		// 请求数据
		uni.$focus.request({
			method: "put",
			url: '/aq_course/app/v2/course/addStudyLog',
			data: mydata,
			loadingText: '',
			header: {
				"token": token()
			},
			openToast: false,
			openGreen: true,
			fail: (res) => {
				// 成功提示
				if (objC.fail) { objC.fail(res); }
			},
			success: (res) => {
				// 成功提示
				if (objC.success) { objC.success(); }
			}
		});
		
	},
	
	// 获取小节播放进度
	videoProgressGet: function (objC) {
		
		// 普通要传输的数据
		var mydata = Object.assign({
			// 通用传递
			teach_course_info_id: 0, // 课程id
			teach_course_id: 0, // 章id
			teach_chapter_id: 0, // 小节id
		}, objC.data);
		
		// 请求视频播放地址
		uni.$focus.request({
			method: "get",
			url: '/aq_course/app/v2/course/getStudyLogInfo',
			data: mydata,
			loadingText: '请求播放进度',
			header: {
				"token": token()
			},
			fail: (res) => { if (objC.fail) { objC.fail(res); } },
			success: (res) => {
				
				// 播放进度信息
				var info_yuan = res ? res : {}; // 原数据
				// 元素构造
				var yuanshu = {
					second: info_yuan.second ? info_yuan.second : 0, // 观看秒数
					baifen: info_yuan.baifen ? info_yuan.baifen : 0, // 观看百分比
				};
				
				// 回调数据
				if (objC.success) { objC.success(yuanshu); }
				
			}
		});
		
	},
	
	// 获取清晰度列表
	getArticulationList: function (objC) {
		
		// 地址栏需要传递数据
		var myurldata = Object.assign({
			videoid: 0, // 视频id
		}, objC.urlData);
		// 请求视频播放地址
		if (myurldata.videoid) {
			uni.$focus.request({
				method: "get",
				url: '/aq_attach/v2/video/get_video_address',
				urlData: myurldata,
				loadingText: '获取清晰度',
				header: {
					"token": token()
				},
				fail: (res) => { if (objC.fail) { objC.fail(res); } },
				success: (res) => {
					console.log("视频清晰度接口返回数据：", res)
					// 回调数据
					if (objC.success) { objC.success(res); }
					
				}
			});
		} else {
	
		}
		
	}
	
};